package com.zzyy.study.entities;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.zzyy.study.annotation.DesensitizeAnnotation;
import com.zzyy.study.enums.DesensitizeEnum;
import lombok.ToString;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;

/**
 * 表名：t_wxcustomer
*/
@Table(name = "t_wxcustomer")
@ToString
public class Customer implements Serializable
{
    @Id
    @GeneratedValue(generator = "JDBC")
    private Integer id;

    /**
     * 客户名字
     */
    @DesensitizeAnnotation(type = DesensitizeEnum.NAME) // 隐藏顾客名字
    private String cname;

    /**
     * 客户密码
     */
    @DesensitizeAnnotation(type = DesensitizeEnum.PASSWORD) // 隐藏密码
    private String password;

    /**
     * 客户年龄
     */
    private Integer age;

    /**
     * 客户手机号码
     */
    @DesensitizeAnnotation(type = DesensitizeEnum.PHONE) // 隐藏手机
    private String phone;

    /**
     * 客户邮件
     */
    //@DesensitizeAnnotation(type = DesensitizeEnum.EMAIL) // 隐藏邮箱
    private String email;

    /**
     * 客户性别
     */
    private Byte sex;

    /**
     * 客户生日
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date birthday;

    /**
     * 删除标志，默认0不删除，1删除
     */
    private Byte deleted;

    /**
     * 创建时间
     */
    @Column(name = "create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @Column(name = "update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * @return id
     */
    public Integer getId() {
        return id;
    }

    /**
     * @param id
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * 获取客户名字
     *
     * @return cname - 客户名字
     */
    public String getCname() {
        return cname;
    }

    /**
     * 设置客户名字
     *
     * @param cname 客户名字
     */
    public void setCname(String cname) {
        this.cname = cname;
    }

    /**
     * 获取客户密码
     *
     * @return password - 客户密码
     */
    public String getPassword() {
        return password;
    }

    /**
     * 设置客户密码
     *
     * @param password 客户密码
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * 获取客户年龄
     *
     * @return age - 客户年龄
     */
    public Integer getAge() {
        return age;
    }

    /**
     * 设置客户年龄
     *
     * @param age 客户年龄
     */
    public void setAge(Integer age) {
        this.age = age;
    }

    /**
     * 获取客户手机号码
     *
     * @return phone - 客户手机号码
     */
    public String getPhone() {
        return phone;
    }

    /**
     * 设置客户手机号码
     *
     * @param phone 客户手机号码
     */
    public void setPhone(String phone) {
        this.phone = phone;
    }

    /**
     * 获取客户邮件
     *
     * @return email - 客户邮件
     */
    public String getEmail() {
        return email;
    }

    /**
     * 设置客户邮件
     *
     * @param email 客户邮件
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * 获取客户性别
     *
     * @return sex - 客户性别
     */
    public Byte getSex() {
        return sex;
    }

    /**
     * 设置客户性别
     *
     * @param sex 客户性别
     */
    public void setSex(Byte sex) {
        this.sex = sex;
    }

    /**
     * 获取客户生日
     *
     * @return birthday - 客户生日
     */
    public Date getBirthday() {
        return birthday;
    }

    /**
     * 设置客户生日
     *
     * @param birthday 客户生日
     */
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    /**
     * 获取删除标志，默认0不删除，1删除
     *
     * @return deleted - 删除标志，默认0不删除，1删除
     */
    public Byte getDeleted() {
        return deleted;
    }

    /**
     * 设置删除标志，默认0不删除，1删除
     *
     * @param deleted 删除标志，默认0不删除，1删除
     */
    public void setDeleted(Byte deleted) {
        this.deleted = deleted;
    }

    /**
     * 获取创建时间
     *
     * @return createTime - 创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置创建时间
     *
     * @param createTime 创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取更新时间
     *
     * @return updateTime - 更新时间
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置更新时间
     *
     * @param updateTime 更新时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}